/**
 * 全局图片错误处理
 */

import { fixImageUrl, getDefaultAvatar } from './imageUtils';

/**
 * 初始化全局图片错误处理
 */
export const initGlobalImageHandler = () => {
  // 监听全局的图片加载错误
  document.addEventListener(
    'error',
    (event) => {
      const target = event.target as HTMLImageElement;

      // 只处理 img 标签的错误
      if (target.tagName === 'IMG') {
        const originalSrc = target.src;

        // 如果是七牛云的图片且还没有修复过
        if (originalSrc.includes('qiniu.singoval.com') && !target.dataset.fixed) {
          const fixedUrl = fixImageUrl(originalSrc);

          if (fixedUrl && fixedUrl !== originalSrc) {
            console.log('Attempting to fix broken image URL:', {
              original: originalSrc,
              fixed: fixedUrl,
            });
            target.dataset.fixed = 'true';
            target.src = fixedUrl;
            return;
          }
        }

        // 如果修复后仍然失败，或者不是七牛云图片，使用默认头像
        if (!target.dataset.defaulted) {
          console.log('Using default avatar for failed image:', originalSrc);
          target.dataset.defaulted = 'true';
          target.src = getDefaultAvatar();
        }
      }
    },
    true,
  ); // 使用捕获阶段
};

/**
 * 预处理图片 URL
 */
export const preprocessImageUrl = (url?: string): string | undefined => {
  if (!url) return undefined;

  // 先尝试修复 URL
  const fixedUrl = fixImageUrl(url);

  // 如果是七牛云的 URL 且修复后有变化，记录日志
  if (url.includes('qiniu.singoval.com') && fixedUrl !== url) {
    console.log('Preprocessed image URL:', { original: url, fixed: fixedUrl });
  }

  return fixedUrl;
};
